package tk.sunlatus.project.common.mappers;

import java.util.List;

import tk.sunlatus.project.permission.domain.Role;
import tk.sunlatus.project.permission.domain.RoleUserRef;

/**
 * @{# UserMapper.java Create on Mar 11, 2012 7:46:53 PM
 * 
 *     类功能说明: mybatis数据库操作接口
 * 
 *     <p>
 *     Copyright: Copyright(c) 2012
 *     </p>
 * @Version 1.0
 * @author sunlotus
 */
public interface RoleMapper {

    /**
     * 方法描述：添加角色<br>
     * 角色ID由系统维护
     * 
     * @param role
     *            角色
     * @return 返回影响的记录数
     */
    int saveRole(Role role);

    /**
     * 方法描述：修改角色<br>
     * 角色ID由不允许修改
     * 
     * @param role
     *            角色
     * @return 角色修改结果，返回修改的记录数
     */
    int updateRole(Role role);

    /**
     * 方法描述：删除角色<br>
     * 
     * @param role
     *            角色信息<br>
     *            如果角色信息为null，返回null,否则返回被删除信息
     * @return 删除记录数
     */
    int removeRoles(Role role);

    /**
     * 方法描述：删除角色<br>
     * 
     * @param roleID
     *            角色信息ID<br>
     *            如果roleID为null，返回null,否则返回被删除角色信息
     * @return 删除记录数
     */
    int removeRoleByID(String roleID);

    /**
     * 方法描述：根据角色ID查询角色<br>
     * 
     * @param roleID
     *            角色ID<br>
     *            如果为null，则返回null
     * @return 操作结果，如果查询成功返回角色信息，否则返回null
     */
    Role queryByID(String roleID);

    /**
     * 方法描述：根据角色ID查询角色<br>
     * 
     * @param roleID
     *            角色
     * @return 操作结果，如果查询成功返回角色信息，否则返回null
     */
    List<Role> queryRoles(Role role);

    /**
     * 方法描述：向角色中添加用户
     * 
     * @param role
     * @param userIDList
     */
    void addUsers2Role(List<RoleUserRef> roleUserRef);

}
